iT邦幫忙

0

Day 30:總結與下一步學習路線(資源與練習題)

  • 分享至 

  • xImage
  •  

💡 總結回顧:重入攻擊的教訓

過去兩天的實作,我們從一個具有 Reentrancy 漏洞的保險庫合約,學到了兩個重要的教訓:

漏洞的本質: Solidity 安全的核心是狀態同步。錯誤的**「外部呼叫在前,狀態更新在後」**(違反 CEI 原則),就能讓資金被無限次提領。

攻防的細節: 攻擊者必須透過低層次 call 才能繞過 EVM 對 receive() 函式提供的 2300 Gas 限制,以確保重入迴圈能夠啟動。

第一部分:Web3 程式碼的十大安全檢查項目

要成為一名合格的 Web3 開發者或安全審計員,您必須在編寫任何處理資金的函式時,系統性地檢查以下項目(這是從 OWASP Smart Contract Top 10 和業界最佳實踐中提取的核心清單):

https://ithelp.ithome.com.tw/upload/images/20251020/20178956LwZh13SAl6.png

第二部分:進階學習資源與工具推薦

要從基礎開發者進階到安全專家,實戰訓練和專業工具必不可少。
📘 推薦書籍與線上課程

https://ithelp.ithome.com.tw/upload/images/20251020/20178956qw1Wtre7d9.png

🔧 必備的安全工具

https://ithelp.ithome.com.tw/upload/images/20251020/20178956hUnJ48JMR9.png

第三部分:延伸實作練習題 (進階挑戰)

要將所學知識應用到更複雜的場景,請挑戰以下三個延伸實作:

實作題目 1:可升級合約的 Storage 碰撞風險

目標: 寫一個 Proxy 合約和兩個版本的邏輯合約 (V1 和 V2)。

挑戰: 故意在 V2 中更改狀態變數的順序或類型,然後進行升級,觀察 Proxy 裡的舊數據是否被覆蓋或錯亂(即 Storage Slot 碰撞)。

學習點: 掌握 Storage Layout 規則和 Upgradeable 合約的複雜性。

實作題目 2:模擬 Oracle (預言機) 驗證與操縱

目標: 寫一個 DeFi 借貸合約,其抵押品價值依賴於一個假的 Oracle 合約。

挑戰: 寫一個 Attacker 合約,在一次交易中:先操縱 Oracle 合約回傳一個極高的價格 → 再從借貸合約中提取超額的資產 → 最後還原價格。

學習點: 理解預言機漏洞 (Price Oracle Manipulation) 和閃電貸攻擊的基礎。

實作題目 3:事件日誌的審計工具模擬

目標: 寫一個 Solidity 函式,用於追蹤資金流動,並確保所有資金進出都有 Event 記錄。

挑戰: 使用 JavaScript 或 Python 寫一個簡單的腳本,讀取區塊鏈歷史交易的 Logs,並分析 Vault 合約的 Deposited 和 Withdrawn Event 數量是否與實際的資金變動一致。

學習點: 強制執行事件發出 (Event Emitting) 的最佳實踐,並學習鏈下審計工具的運作原理。


圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言